import os
import subprocess
import sys

def build_exe():
    """
    使用PyInstaller打包应用为可执行文件
    """
    print("开始打包应用...")
    
    # 确保PyInstaller已安装
    try:
        import PyInstaller
    except ImportError:
        print("正在安装PyInstaller...")
        subprocess.check_call([sys.executable, "-m", "pip", "install", "pyinstaller"])
    
    # 构建命令
    cmd = [
        "pyinstaller",
        "--name=face_recognition_app",
        "--windowed",  # 无控制台窗口
        "--onedir",    # 打包为文件夹，使known_faces可配置
        "--icon=NONE", # 可以替换为自定义图标
        # 不再将known_faces作为资源打包，而是在安装后创建空文件夹
        "face_recognition_app.py"
    ]
    
    # 执行打包命令
    subprocess.check_call(cmd)
    
    # 在dist目录中创建known_faces文件夹
    dist_dir = os.path.join("dist", "face_module")
    known_faces_dir = os.path.join(dist_dir, "known_faces")
    if not os.path.exists(known_faces_dir):
        os.makedirs(known_faces_dir)
        print(f"已在打包目录中创建known_faces文件夹: {known_faces_dir}")
    
    print("打包完成！应用程序位于 dist/face_module 文件夹中。")
    print("注意: 您可以在known_faces文件夹中添加人脸图像，每个人的图像应放在以其名字命名的子文件夹中。")

if __name__ == "__main__":
    # 创建known_faces文件夹（如果不存在）
    if not os.path.exists("known_faces"):
        os.makedirs("known_faces")
        print("已创建known_faces文件夹")
    
    # 打包应用
    build_exe()